JaeHyeonKim19

[자바]백준 1018 체스판 다시 칠하기

2020-03-17


import java.io.*;
import java.util.*;

public class Main {
	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		int n = Integer.parseInt(st.nextToken());
		int m = Integer.parseInt(st.nextToken());
		int min = Integer.MAX_VALUE;
		int temp = 0;
		char [][] board = new char [n][m];
		char [][] standard = new char [n][m];
		String line = "";
		for(int i = 0; i < n; i++) {
			line = br.readLine();
			for(int j = 0; j < m; j++) {
				board[i][j] = line.charAt(j);
			}
		}
		for(int i = 0; i < n; i++) {
			for(int j = 0; j < m; j++) {
				if((i + j) % 2 == 0) standard[i][j] = 'W';
				else standard[i][j] = 'B';
			}
		}
		for(int i = 0; i < n - 7; i++) {
			for(int j = 0; j < m - 7; j++) {
				for(int k = i; k < i + 8; k++) {
					for(int l = j; l < j + 8; l++) {
						if(board[k][l] == standard[k][l]) temp++;
					}
				}
				min = temp < min ? temp : min;
				temp = 0;
			}
		}
		for(int i = 0; i < n - 7; i++) {
			for(int j = 0; j < m - 7; j++) {
				for(int k = i; k < i + 8; k++) {
					for(int l = j; l < j + 8; l++) {
						if(board[k][l] != standard[k][l]) temp++;
					}
				}
				min = temp < min ? temp : min;
				temp = 0;
			}
		}
		System.out.print(min);
	}
}